﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ComunesMGI.DataTypes
{
    [Serializable]
    public class DataIncidenteReporte
    {
        private string _idIncidente;
        private string _url;
        private string _responsable;
        private string _titulo;
        private string _descripcion;
        private string _cliente;
        private string _sistema;
        private string _wp;
        private string _estado;
        private DateTime _fechaPropuesto;
        private DateTime _fechaCierre;
        private string _esfuerzoTotal;
        private string _esfuerzoRestante;
        private DateTime _fechaEstimadaFin;


        public DateTime FechaEstimadaFin
        {
            get { return _fechaEstimadaFin; }
            set { _fechaEstimadaFin = value; }
        }
        public string EsfuerzoTotal
        {
            get { return _esfuerzoTotal; }
            set { _esfuerzoTotal = value; }
        }
        

        public string EsfuerzoRestante
        {
            get { return _esfuerzoRestante; }
            set { _esfuerzoRestante = value; }
        }



        public string Estado
        {
            get { return _estado; }
            set { _estado = value; }
        }

        public string Titulo
        {
            get { return _titulo; }
            set { _titulo = value; }
        }

        public string Url
        {
            get { return _url; }
            set { _url = value; }
        }

        public string Sistema
        {
            get { return _sistema; }
            set { _sistema = value; }
        }

        public string Responsable
        {
            get { return _responsable; }
            set { _responsable = value; }
        } 

        public DateTime FechaPropuesto
        {
            get { return _fechaPropuesto; }
            set { _fechaPropuesto = value; }
        }
        

        public DateTime FechaCierre
        {
            get { return _fechaCierre; }
            set { _fechaCierre = value; }
        }
        


        public string IdIncidente
        {
            get { return _idIncidente; }
            set { _idIncidente = value; }
        }
        
        public string Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }


        public string Cliente
        {
            get { return _cliente; }
            set { _cliente = value; }
        }

        public string WP
        {
            get { return _wp; }
            set { _wp = value; }
        }

        public DataIncidenteReporte(string idIncidente, string titulo, string url, string responsable, string sistema, string wp, string descripcion, DateTime fechaPropuesto, DateTime fechaCierre, string estado)
        {
            this._idIncidente = idIncidente;
            this._titulo = titulo;
            this._url = url;
            this._responsable = responsable;
            this._descripcion = descripcion;
            this._sistema = sistema;
            this._wp= wp;
            this._fechaCierre = fechaCierre;
            this._fechaPropuesto = fechaPropuesto;
            this._estado = estado;
        }

        public override bool Equals(Object obj)
        {
            DataIncidenteReporte dataIncidente = (DataIncidenteReporte)obj;
            return ((this.Cliente == dataIncidente.Cliente) && (this.Descripcion == dataIncidente.Descripcion) &&
                    (this.EsfuerzoRestante == dataIncidente.EsfuerzoRestante) && (this.EsfuerzoTotal == dataIncidente.EsfuerzoTotal) &&
                    (this.Estado == dataIncidente.Estado) && (this.FechaCierre.Equals( dataIncidente.FechaCierre)) &&
                    (this.FechaEstimadaFin.Equals( dataIncidente.FechaEstimadaFin)) && (this.FechaPropuesto.Equals( dataIncidente.FechaPropuesto)) &&
                    (this.IdIncidente.Equals( dataIncidente.IdIncidente)) && (this.Responsable.Equals( dataIncidente.Responsable)) && 
                    (this.Sistema.Equals( dataIncidente.Sistema)) && (this.Titulo.Equals( dataIncidente.Titulo)) &&
                    (this.Url.Equals( dataIncidente.Url)) && (this.WP.Equals( dataIncidente.WP)));

        }

        public override int GetHashCode()
        {

            int hash = 0;
            if (this._cliente!= null)
                hash ^= this._cliente.GetHashCode();
            if (this._descripcion != null)
                hash ^= this._descripcion.GetHashCode();
            hash ^= this._esfuerzoRestante.GetHashCode();
            hash ^= this._esfuerzoTotal.GetHashCode();
            if(this._estado!=null)
                hash ^= this._estado.GetHashCode();
            if(this._fechaCierre!=null)
                hash ^= this._fechaCierre.GetHashCode();
            if(this._fechaEstimadaFin!=null)
                hash ^= this._fechaEstimadaFin.GetHashCode();
            if(this._fechaPropuesto!=null)
                hash ^= this._fechaPropuesto.GetHashCode();
            hash ^= this._idIncidente.GetHashCode();
            if (this._responsable != null)
                hash ^= this._responsable.GetHashCode();
            if (this._sistema != null)
                hash ^= this._sistema.GetHashCode();
            if (this._titulo!= null)
                hash ^= this._titulo.GetHashCode();
            if (this._url!= null)
                hash ^= this._url.GetHashCode();
            if (this._wp != null)
                hash ^= this._wp.GetHashCode();
            return hash;
        }
 




    }
}
